#pragma once

#include <stdint.h>

#include "arch.hpp"


#ifdef HIGH
    #undef HIGH
#endif

#ifdef LOW
    #undef LOW
#endif


namespace arduino_basic {

    constexpr uint8_t HIGH = 1;
    constexpr uint8_t LOW = 0;

    constexpr uint8_t INPUT = 0x0;
    constexpr uint8_t OUTPUT = 0x1;
    constexpr uint8_t INPUT_PULLUP = 0x2;

#ifdef _ARDUINO_BASIC__ARCH_CM

    constexpr uint8_t INPUT_FLOATING = INPUT;
    constexpr uint8_t INPUT_PULLDOWN = 0x3;
    constexpr uint8_t INPUT_ANALOG = 0x4;
    constexpr uint8_t OUTPUT_OPEN_DRAIN = 0x5;

#endif

    constexpr uint8_t CHANGE = 0x2;
    constexpr uint8_t FALLING = 0x3;
    constexpr uint8_t RISING = 0x4;

    constexpr uint8_t LSBFIRST = 0;
    constexpr uint8_t MSBFIRST = 1;


}  // namespace arduino_basic